Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Node / ReticulumProjects / MeshChatX.git / files / scripts / docker-bake-lxst-filterlib-musl.py

Displaying Raw • Download


scripts/docker-bake-lxst-filterlib-musl.py 3f7ef731b5effd9aa3a81eceea66fd6c2b56498c (3f7ef731) Text, 2.25 KB

T8b949e#!/usr/bin/env python3
T8b949e# SPDX-License-Identifier: 0BSD

T8b949e"""Alpine/musl Docker: copy cffi-built filter shared library to LXST.filterlib name.

LXST ships glibc-tagged filterlib*.so wheels; musl ignores them and cffi
verify() drops the musl artifact under LXST/__pycache__/_cffi__*.so.
Without this step, a fresh process cannot resolve LXST.filterlib for
ffi.dlopen() and would try to compile again at runtime (no gcc).

The cffi artifact is a plain shared library (loaded via dlopen), not a Python
extension module (no PyInit_filterlib); do not import LXST.filterlib.
"""

Tff7b72from T7ee787__future__ Tff7b72import Te6edf3annotations

Tff7b72import T7ee787importlibT7ee787.T7ee787util
Tff7b72import T7ee787shutil
Tff7b72import T7ee787subprocess
Tff7b72import T7ee787sys
Tff7b72import T7ee787sysconfig
Tff7b72from T7ee787pathlib Tff7b72import Te6edf3Path


Tff7b72def Td2a8ffmainTb4b4b4(Tb4b4b4) Tff7b72-Tff7b72> Tffa657intTb4b4b4:
Tff7b72import T7ee787LXST

Te6edf3pkg Tff7b72= Te6edf3PathTb4b4b4(Te6edf3LXSTTff7b72.Td2a8ff__file__Tb4b4b4)Tff7b72.Td2a8ffresolveTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffparent
Te6edf3ext_suffix Tff7b72= Te6edf3sysconfigTff7b72.Td2a8ffget_config_varTb4b4b4(Ta5d6ff"Ta5d6ffEXT_SUFFIXTa5d6ff"Tb4b4b4) Tff7b72or Ta5d6ff"Ta5d6ff"
Te6edf3target Tff7b72= Te6edf3pkg Tff7b72/ Ta5d6fffTa5d6ff"Ta5d6fffilterlibTffd700{Te6edf3ext_suffixTffd700}Ta5d6ff"

Tff7b72import T7ee787LXSTT7ee787.T7ee787Filters

Te6edf3candidates Tff7b72= Tffa657sortedTb4b4b4(
Te6edf3pkgTff7b72.Td2a8ffglobTb4b4b4(Ta5d6ff"Ta5d6ff__pycache__/_cffi__*.cpython-*-linux-musl.soTa5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3keyTff7b72=Tff7b72lambda Te6edf3pTb4b4b4: Te6edf3pTff7b72.Td2a8ffstatTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffst_mtimeTb4b4b4,
Te6edf3reverseTff7b72=Tff7b72TrueTb4b4b4,
Tb4b4b4)
Tff7b72if Tff7b72not Te6edf3candidatesTb4b4b4:
Tffa657printTb4b4b4(
Ta5d6ff"Ta5d6ffdocker-bake-lxst-filterlib-musl: no musl _cffi shared library under Ta5d6ff"
Ta5d6ff"Ta5d6ffsite-packages/LXST/__pycache__ (did Filters import compile?)Ta5d6ff"Tb4b4b4,
Te6edf3fileTff7b72=Te6edf3sysTff7b72.Td2a8ffstderrTb4b4b4,
Tb4b4b4)
Tff7b72return T79c0ff1

Te6edf3src Tff7b72= Te6edf3candidatesTb4b4b4[T79c0ff0Tb4b4b4]
Te6edf3shutilTff7b72.Td2a8ffcopy2Tb4b4b4(Te6edf3srcTb4b4b4, Te6edf3targetTb4b4b4)

Te6edf3spec Tff7b72= Te6edf3importlibTff7b72.Td2a8ffutilTff7b72.Td2a8fffind_specTb4b4b4(Ta5d6ff"Ta5d6ffLXST.filterlibTa5d6ff"Tb4b4b4)
Tff7b72if Tff7b72not Te6edf3spec Tff7b72or Tff7b72not Te6edf3specTff7b72.Td2a8fforiginTb4b4b4:
Tffa657printTb4b4b4(
Ta5d6ff"Ta5d6ffdocker-bake-lxst-filterlib-musl: LXST.filterlib still not discoverable Ta5d6ff"
Ta5d6fffTa5d6ff"Ta5d6ffafter copying Tffd700{Te6edf3srcTff7b72.Td2a8ffnameTffd700}Ta5d6ff"Tb4b4b4,
Te6edf3fileTff7b72=Te6edf3sysTff7b72.Td2a8ffstderrTb4b4b4,
Tb4b4b4)
Tff7b72return T79c0ff1

Te6edf3verify Tff7b72= Te6edf3subprocessTff7b72.Td2a8ffrunTb4b4b4(
Tb4b4b4[
Te6edf3sysTff7b72.Td2a8ffexecutableTb4b4b4,
Ta5d6ff"Ta5d6ff-cTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffimport LXST.Filters as F; raise SystemExit(0 if F.USE_NATIVE_FILTERS else 1)Ta5d6ff"Tb4b4b4,
Tb4b4b4]Tb4b4b4,
Te6edf3checkTff7b72=Tff7b72FalseTb4b4b4,
Tb4b4b4)
Tff7b72if Te6edf3verifyTff7b72.Td2a8ffreturncode Tff7b72!= T79c0ff0Tb4b4b4:
Tffa657printTb4b4b4(
Ta5d6ff"Ta5d6ffdocker-bake-lxst-filterlib-musl: fresh interpreter did not load native filtersTa5d6ff"Tb4b4b4,
Te6edf3fileTff7b72=Te6edf3sysTff7b72.Td2a8ffstderrTb4b4b4,
Tb4b4b4)
Tff7b72return T79c0ff1

Tffa657printTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffdocker-bake-lxst-filterlib-musl: OK (Tffd700{Te6edf3srcTff7b72.Td2a8ffnameTffd700}Ta5d6ff -> Tffd700{Te6edf3targetTff7b72.Td2a8ffnameTffd700}Ta5d6ff)Ta5d6ff"Tb4b4b4)
Tff7b72return T79c0ff0


Tff7b72if Tff7b72__name__ Tff7b72== Ta5d6ff"Ta5d6ff__main__Ta5d6ff"Tb4b4b4:
Tff7b72raise Tf85149SystemExitTb4b4b4(Te6edf3mainTb4b4b4(Tb4b4b4)Tb4b4b4)


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────